package com.yunhe.common.constant;

public class ControlConsts {

    /**
     * 策略操作类型
     */
    public enum RunStrategyType {
        General("General", "普通策略"),
        Temporary("Temporary", "临时策略"),
        Holiday("Holiday", "节假日"),
        Current("Current", "站端上传当前执行策略"),
        History("History", "站端策略执行历史记录");

        private String value;
        private String title;

        RunStrategyType(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 策略操作动作
     */
    public enum RunStrategyAction {
        Distribute("Distribute", "下发策略"),
        Receive("Receive", "接收策略"),
        Start("Start", "开始策略"),
        Stop("Stop", "停止策略");

        private String value;
        private String title;

        RunStrategyAction(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 适用日期类型
     */
    public enum ApplicableDateType {

        NaturalDay("NaturalDay", "自然日"),
        WorkDay("WorkDay", "工作日"),
        Holiday("Holiday", "节假日");

        private String value;
        private String title;

        ApplicableDateType(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 控制指令
     */
    public enum ControlCommand {

        Charge("Charge", "充电"),
        Discharge("Discharge", "放电"),
        Storage("Storage", "蓄电");

        private String value;
        private String title;

        ControlCommand(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 控制方式
     */
    public enum ControlMode {

        Power("Power", "功率"),
        CurrentVoltage("Current/Voltage", "电流/电压");

        private String value;
        private String title;

        ControlMode(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 结束控制参数
     */
    public enum EndControlParam {

        SOC("SOC", "SOC"),
        Nothing("Nothing", "无");

        private String value;
        private String title;

        EndControlParam(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 策略ID
     */
    public enum RunStrategyId {

        C01("C01", "有功控制/削峰填谷"),
        C02("C02", "削峰填谷（AI版）"),
        C03("C03", "一次调频"),
        C04("C04", "二次调频"),
        C05("C05", "储能调峰"),
        C06("C06", "紧急功率支撑"),
        C07("C07", "无功/电压控制"),
        C08("C08", "RFB有功控制/削峰填谷"),
        C09("C09", "RFB黑启动"),
        C10("C10", "RFB能量转移"),
        C11("C11", "黑启动（储能）"),
        C12("C12", "黑启动（燃气轮机）"),
        C13("C13", "负荷平衡"),
        C14("C14", "孤网停机（燃气轮机）"),
        C15("C15", "孤网停机（储能）"),
        C16("C16", "园区削峰"),
        C17("C17", "需求响应"),
        C18("C18", "经济最优"),
        C19("C19", "手动控制");

        private String value;
        private String title;

        RunStrategyId(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 策略模式
     */
    public enum RunStrategyMode {

        DispatchMode("DispatchMode", "调度模式"),
        LocalMode("LocalMode", "就地模式"),
        RemoteMode("RemoteMode", "远程模式"),
        ManualMode("ManualMode", "手动模式");

        private String value;
        private String title;

        RunStrategyMode(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 策略状态
     */
    public enum RunStrategyStatus {

        Wait("wait", "等待"),
        Stopped("stopped", "已停用"),
        Started("started", "已启用"),
        Executing("executing", "执行中");

        private String value;
        private String title;

        RunStrategyStatus(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }

    /**
     * 策略性质
     */
    public enum RunStrategyProperty {

        Active("Active", "主动"),
        Passive("Passive", "被动");

        private String value;
        private String title;

        RunStrategyProperty(String value, String title) {
            this.value = value;
            this.title = title;
        }

        public String value() {
            return this.value;
        }

        public String title() {
            return this.title;
        }
    }
}
